dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp 导入是 dexp 导出的相反过程。还原的方式可以灵活选择,如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等。
dimp 工具名称有两种写法 dimp 和 dimpdp,两者区别在于:dimp 导入的文件必须存放在客户端,dimpdp 导入的文件必须存放在服务器端。另外由于 dimpdp 是将客户端命令发给服务器启动 dimp 执行,如果客户端连接使用 dm_svc.conf 配置,服务器端也应该跟客户端配置一致。
3.1 使用 dimp 工具
dimp 工具需要从命令行启动。在 cmd 命令行工具中找到 dimp 所在安装目录/dmdbms/bin,输入 dimp 和参数后回车。参数在下一节详细介绍。
语法如下:
dimp PARAMETER=value { PARAMETER=value }
或
dimpdp PARAMETER=value { PARAMETER=value }
PARAMETER:dimp 参数。其中 USERID 必须为第一个参数,其余参数之间排列顺序无影响,参数之间使用空格间隔。
value:参数取值。
例 将逻辑备份采用 FULL 方式完全导入到用户名为 SYSDBA,密码以“Dmsys_123”为例,实际运行中需要用户自行替换为数据库初始化时设定的密码。IP 地址为 192.168.0.248,端口号为 8888 的数据库。导入文件名为 db_str.dmp,导入的日志文件名为 db_str.log,路径为/mnt/data/dexp。
./dimp USERID=SYSDBA/Dmsys_123@192.168.0.248:8888 FILE=db_str.dmp DIRECTORY=/mnt/data/dexp LOG=db_str.log FULL=Y
3.2 dimp 参数一览表
本节提供 dimp 的参数一览表,供用户快速参考。
参数 | 含义 | 备注 |
USERID | 数据库的连接信息 | 必选 |
FILE | 输入文件,即dexp或dexpdp导出的文件 | 可选 |
LOG | 日志文件 | 可选 |
DIRECTORY | 导入文件所在目录 | 可选 |
FULL | 整库导入(N) | 可选,四者中选其一。缺省为导入的文件导出时所用的方式 |
OWNER | 以用户方式导入 | |
SCHEMAS | 以模式方式导入 | |
TABLES | 以表名方式导入,指定导入的tables名称。不支持对外部表进行导入 | |
PARALLEL | 用于指定导入的过程中所使用的线程数目(16) | 可选 |
TABLE_PARALLEL | 用于指定导入的过程中每个表所使用的子线程数目(8) | 可选。在FAST_LOAD为Y时有效 |
IGNORE | 忽略创建错误 (N)。如果表已经存在则向表中插入数据,否则报错表已经存在。 | 可选 |
TABLE_EXISTS_ACTION | 需要的导入表在目标库中存在时采取的操作[SKIP | APPEND | TRUNCATE | REPLACE | TRUNCATE_CASCADE] | 可选 |
FAST_LOAD | 是否使用dmfldr进行数据导入(N) | 可选 |
FLDR_ORDER | 使用dmfldr是否需要严格按顺序来导数据(Y) | 可选 |
COMMIT_ROWS | 批量提交的行数(5000) | 可选 |
EXCLUDE | 批量设置导入时忽略的对象种类。 1.EXCLUDE=[(]<对象种类名>{,<对象种类名>}[)] 对象种类可为:CONSTRAINTS、INDEXES、ROWS、TRIGGERS、GRANTS、VIEWS、PROCEDURE、PACKAGE、SEQUENCE、TABLES 、JOB。 |
可选 |
2. EXCLUDE=TYPE:name1,name2 TYPE可为SCHEMAS、TABLES、VIEWS、PROCEDURE、PACKAGE、SEQUENCE。 |
||
INCLUDE | 批量设置导入时只导入指定的对象种类或某个具体对象。 1.INCLUDE=[(]<对象种类名>{,<对象种类名>}[)] 对象种类可为:CONSTRAINTS、INDEXES、ROWS、TRIGGERS、GRANTS、VIEWS、PROCEDURE、PACKAGE、SEQUENCE、TABLES 、JOB。 |
可选 |
2. INCLUDE=TYPE:name1,name2 TYPE可为SCHEMAS、TABLES、VIEWS、PROCEDURE、PACKAGE、SEQUENCE。 |
||
GRANTS | 导入权限 (Y) | 可选 |
CONSTRAINTS | 导入约束 (Y) | 可选 |
INDEXES | 导入索引 (Y) | 可选 |
TRIGGERS | 导入触发器(Y) | 可选 |
ROWS | 导入数据行 (Y) | 可选 |
NOLOGFILE | 不使用日志文件(N) | 可选 |
NOLOG | 屏幕上不显示日志信息(N) | 可选 |
DUMMY | 设置交互信息处理(P:打印) | 可选 |
LOG_WRITE | 日志信息实时写入文件(N) | 可选 |
PARFILE | 参数文件名,如果dimp的参数很多,可以存成参数文件 | 可选 |
FEEDBACK | 显示每 x 行 (0) 的进度 | 可选 |
COMPILE | 编译过程, 程序包和函数 (Y) | 可选 |
INDEXFILE | 将表的索引/约束信息写入指定的文件 | 可选 |
INDEXFIRST | 导入时先建索引(N) | 可选 |
REMAP_SCHEMA | SOURCE_SCHEMA:TARGET_SCHEMA 将SOURCE_SCHEMA中的数据导入到TARGET_SCHEMA中 | 可选 |
ENCRYPT_PASSWORD | 数据的加密密钥 | 可选。和dexp中的ENCRYPT_PASSWORD设置的密钥一样 |
ENCRYPT_NAME | 数据的加密算法的名称 | 可选。和dexp中的ENCRYPT_NAME设置的加密算法一样 |
SHOW/ DESCRIBE | 打印出指定文件的信息 (N) | 可选 |
TASK_THREAD_NUMBER | 用于设置dmfldr处理用户数据的线程数目 | 可选 |
BUFFER_NODE_SIZE | 用于设置dmfldr读入文件缓冲区大小 | 可选 |
TASK_SEND_NODE_NUMBER | 用于设置dmfldr发送节点个数,取值范围16~65535 | 可选 |
LOB_NOT_FAST_LOAD | 如果一个表含有大字段,则不使用dmfldr(N) | 可选 |
PRIMARY_CONFLICT | 主键冲突的处理方式,默认报错 | 可选 |
TABLE_FIRST | 是否强制先导入表 (缺省N)。Y表示先导入表,N正常导入 | 可选 |
SHOW_SERVER_INFO | 是否显示服务器信息 (N),Y表示显示导出文件对应服务器信息,实际不导入,N表示不显示导出文件对应服务器信息,正常导入 | 可选 |
IGNORE_INIT_PARA | 指定源库和目标库之间忽略差异的建库参数(0)。0:不忽略建库参数差异,1:忽略CASE_SENSITIVE,2:忽略LENGTH_IN_CHAR,3:忽略CASE_SENSITIVE和LENGTH_IN_CHAR | 可选 |
AUTO_FREE_KEY | 导入数据完成后, 是否释放密钥(N)。Y:是,N:否 | 可选 |
REMAP_TABLE | 格式(SOURCE_TABLE:TARGET_TABLE), 将SOURCE_TABLE中的数据导入到TARGET_TABLE中 |
可选 |
REMAP_TABLESPACE |
格式(SOURCE_TABLESPACE:TARGET_TABLESPACE) 将SOURCE_TABLESPACE表空间映射到TARGET_TABLESPACE表空间中 |
可选 |
SIMPLE_LOG | 导入日志是否使用简要日志(N) | 可选 |
DATA_ONLY | 是否只导入表数据(N) | 可选 |
INDEX_OPTION | 使用快速装载时索引的设置选项(2)。1:不刷新二级索引,数据按照索引先排序,装载完后再将排序的数据插入索引;2:不刷新二级索引,数据装载完成重建后所有二级索引;刷新二级索引,数据装载的同时将数据插入二级索引 | 可选 |
CTRL_INFO | 控制信息用来控制一些特殊情况导入(0)。0:不导入表空间定义,1:导入表空间定义,2:校验导入文件的MD5值,并执行导入,4:校验导入文件的MD5值,但不执行导入,8:导入对象时忽略OR REPLACE条件 | 可选 |
CONFIG_FILE | 配置文件路径,配置默认连接串和密码信息 | 可选 |
FILE_VERSION | 用于指定将dmp文件降级后生成的新dmp文件的逻辑版本,有效范围9~27 | 可选 |
HELP | 显示帮助信息 | 可选 |
说明每个参数含义后面的括号内为(N)则表示该参数缺省为否,为(Y)表示缺省为是;“()”内的值表示的是参数的缺省值。
3.3 dimp 参数详解
3.3.1 特殊参数
特殊参数中介绍了必选参数的和最常用的可选参数。
3.3.1.1 USERID
USERID 用于指定数据库的连接信息。
若配置文件 dm_svc.conf 中配置了导入导出默认连接串,或者使用 CONFIG_FILE 参数指定了局部配置文件,并且局部配置文件中配置了导入导出默认连接串,则可以不指定 USERID 参数;否则必须指定 USERID 参数。用法请参考 dexp 中 USERID。
3.3.1.2 FILE
FILE 用于指定导入文件(可以包含路径)。导入文件是之前使用 dexp 或 dexpdp 导出的文件,其中文件名不能包含特殊符号(\、/、:、*、?、"、<、>、|)。可选参数,dimp 默认使用 dexp.dmp 作为导入文件,dimpdp 默认使用 dexpdp.dmp 作为导入文件 。长度不超过 128 个字符。
语法如下:
FILE=<文件>
例 之前导出的文件路径为:FILE=/mnt/data/dexp/db_str.dmp,那么导入文件可以写成如下所示:
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log DIRECTORY=/mnt/data/dimp
若 FILE 没有指定文件路径,则可在 DIRECTORY 中指定。
说明如果FILE指定的文件包含生成路径,则忽略DIRECTORY中的路径;
如果FILE没有指定路径时,使用DIRECTORY中指定的路径;
如果FILE和DIRECTORY都没有指定路径,则使用系统当前路径。
3.3.1.3 LOG
LOG 用于明确指定导入过程产生的日志文件名称(可以包含路径),可以包含多个文件,用逗号分隔,其中文件名不能包含特殊符号(\、/、:、*、?、"、<、>、|)。可选参数,如果不选用 LOG 参数(来明确指定日志文件名称),那么 dimp 默认的导入日志文件名称为 dimp.log,dimpdp 默认的导入日志文件名称为 dimpdp.log。长度不超过 256 个字符,绝对路径不超过 256 个字符。
语法如下:
LOG=<文件名>
例 指定日志文件名为 db_str.log。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y
DIRECTORY=/mnt/data/dimp
说明如果LOG指定的文件包含生成路径,则忽略DIRECTORY中的路径;
如果LOG没有指定路径时,使用DIRECTORY中指定的路径;
如果LOG和DIRECTORY都没有指定路径,则使用系统当前路径。
导入日志记录了导入的整个过程信息和导入对象的统计信息,供用户查看。详细的 dimp 日志格式介绍和 dexp LOG 中一样,请参考 dexp 的 LOG。
和 LOG 有关的参数还有 NOLOGFILE、NOLOG 和 LOG_WRITE。NOLOGFILE=Y 用于设置不使用日志文件。NOLOG=Y 用于设置不在屏幕上显示日志信息。LOG_WRITE=Y 用于设置日志的实时打印(到日志文件)功能。
3.3.1.4 DIRECTORY
DIRECTORY 用于指定导入文件及日志文件生成的路径。长度不超过 256 个字符。
使用 dimp 工具时,DIRECTORY 为可选参数,缺省导出到 dimp 所在路径。
使用 dimpdp 工具时,DIRECTORY 为必选参数,并且指定的路径必须是通过 CREATE DIRECTORY 定义的目录名。
语法如下:
DIRECTORY=<path>
<path>:导入文件路径和日志文件生成的路径。
如果 FILE 和 LOG 参数指定的文件包含生成路径,则 FILE 和 LOG 参数中指定的路径将替代 DIRECTORY 所指定的路径;如果 FILE 和 LOG 参数指定的文件未包含路径信息,则导入文件路径和日志生成的文件路径都是 DIRECTORY 指定的路径;如果都没有指定路径,程序将根据当前的运行环境来设置相应的导出路径,一般为当前路径。
例 1 没有指定路径,使用当前路径。
./dimp USERID=SYSDBA/Dmsys_123 FILE=db_str.dmp LOG=db_str.log FULL=Y
例 2 指定 FILE 使用/mnt/data/dexp 路径,LOG 使用/mnt/data/dimp 路径。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dimp
说明FILE和LOG中指定的路径,优先级高于DIRECTORY中指定的路径;
当FILE和LOG不指定路径时,才使用DIRECTORY指定的路径;
如果都没有指定路径,则使用系统当前路径。
3.3.1.5 四种级别的导入方式
针对数据库对象,有 FULL、OWNER、SCHEMAS、TABLES 四种导入方式可供选择。一次导入只能指定一种方式。可选参数,缺省为导入的文件导出时所用的方式。
小窍门导入方式可以和导出方式不一致。
例如:当导出方式不为FULL时,导入时也可以指定为FULL方式,此时 的FULL会将导出文件包含的全部内容导入到指定的实例中。
3.3.1.5.1 FULL
FULL 方式导入整个数据库。
语法如下:
FULL=Y/N
设置 FULL=Y 时指定以 FULL 方式导入整个数据库;设置 FULL=N 相当于没有设置 FULL 参数,缺省为 N。
例 设置 FULL=Y,导入整个数据库,导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y
DIRECTORY=/mnt/data/dimp
3.3.1.5.2 OWNER
OWNER 方式导入一个或多个用户拥有的所有对象。
语法如下:
OWNER=<用户名>{,<用户名>}
例 设置 OWNER=USER01,导入用户 USER01 所拥有的对象全部导出。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log
OWNER=USER01 DIRECTORY=/mnt/data/dimp
3.3.1.5.3 SCHEMAS
SCHEMAS 方式的导入一个或多个模式下的所有对象。
语法如下:
SCHEMAS=<模式名>{,<模式名>}
例 设置 SCHEMAS=USER01,导入模式 USER01 模式下的所有对象。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log
SCHEMAS=USER01 DIRECTORY=/mnt/data/dimp
说明一般情况下,OWNER与SCHEMAS导入导出是相同的。 但是用户可以包含多个模式,在这种情况下SCHEMAS的导入导出是OWNER导入导出的一个子集。
3.3.1.5.4 TABLES
TABLES 方式导入一个或多个指定的表或表分区。导入所有数据行、约束、索引等信息。
语法如下:
TABLES=[模式名.]表名[:表分区名] [, ...]
例 设置 TABLES=table1,table2,导入 table1,table2 两张表的所有数据和信息。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log
TABLES=table1,table2 DIRECTORY=/mnt/data/dimp
和 TABLES 导入有关的参数还有 EXCLUDE,用来指定导入时过滤掉某类对象。
3.3.2 普通参数
3.3.2.1 PARALLEL
PARALLEL 用于指定导入的过程中所使用的线程数目。可选参数。如果 CPU 核数为 N 的话,那一般来说 PARALLEL 为 N 或者 N+1 最合适。
语法如下:
PARALLEL=<num>
<num>:线程数。整数类型,取值范围:1~100,缺省为 16。
例 设置 PARALLEL=2 时,则线程数为 2。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y
DIRECTORY=/mnt/data/dimp PARALLEL=2
3.3.2.2 TABLE_PARALLEL
TABLE_PARALLEL 在 FAST_LOAD 为 Y 时有效,用于指定导入每张表所使用的线程数。可选参数。如果 CPU 核数为 N 的话,那一般来说 TABLE_PARALLEL 为 N 或者 N+1 最合适。在 MPP 模式下会转换成单线程。
语法如下:
TABLE_PARALLEL=<num>
<num>:线程数。整数类型,取值范围 1~16,缺省值为 8。
例 设置 TABLE_PARALLEL=3 时则线程数为 3。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y
DIRECTORY=/mnt/data/dimp TABLE_PARALLEL=3
3.3.2.3 IGNORE
IGNORE 指定忽略创建数据库对象(表、类、java 类、domain、sequence、
comment、view、synonym、trigger、package、dblink、user、存储过程/函数、role 对象创建、权限授权语句、索引、约束等)错误。可选参数。缺省为 N,不忽略。
语法如下:
IGNORE=Y/N
Y:忽略导入时所产生的创建数据库对象错误并继续执行。
N:不忽略导入时所产生的创建数据库对象错误。遇到错误的表会停止执行并报错,其他正常的表继续执行。缺省值
3.3.2.4 TABLE_EXISTS_ACTION
TABLE_EXISTS_ACTION 用于要导入的表已经存在时的处理方式。默认为直接报错。
语法如下:
TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE | TRUNCATE_CASCADE]
SKIP:跳过此表。
APPEND:直接向现有表中导入数据。
TRUNCATE:先删除现有表中的数据,再向表中导入数据。
REPLACE:先删除现有表,再导数据。
TRUNCATE_CASCADE:先删除现有表中的数据,并且级联删除依赖表数据,再向表中导入数据。
3.3.2.5 FAST_LOAD
FAST_LOAD 用于设置是否使用 dmfldr 进行数据导入,缺省为 N。
语法如下:
FAST_LOAD=Y/N
Y:是。
N:否,缺省值。
注意当FAST_LOAD=Y时才可以设置TABLE_PARALLEL参数,否则TABLE_PARALLEL参数无效。
3.3.2.6 FLDR_ORDER
FLDR_ORDER 用于设置使用 dmfldr 时,是否严格按导出顺序来导入数据。可选参数。
语法如下:
FLDR_ORDER=Y/N
Y:表示按照导出顺序来导入数据,缺省值。
N:表示不按照导出顺序来导入,数据的创建为随机生成。
3.3.2.7 COMMIT_ROWS
COMMIT_ROWS 用于设置批量提交的行数,默认为 5000 行。用户可以根据实际情况调整每次提交的行数,以达到性能的最佳点。一般情况下可不设置。可选参数。
语法如下:
COMMIT_ROWS=<num>
<num>:行数。取值范围:1~1000000,缺省为 5000。
3.3.2.8 EXCLUDE
EXCLUDE 用来批量设置导入时忽略的对象种类。可选参数。
语法如下:
EXCLUDE=[(]<对象种类名>{,<对象种类名>}[)]
或
EXCLUDE=TYPE:name1,name2
< 对象种类名 >:包括 CONSTRAINTS、INDEXES、ROWS、TRIGGERS、GRANTS、VIEWS、PROCEDURE、PACKAGE、SEQUENCE、TABLES、JOB。例如:EXCLUDE=(CONSTRAINTS , INDEXES)。
TYPE:包括 SCHEMAS、TABLES、VIEWS、PROCEDURE、PACKAGE、SEQUENCE。
- 当 TYPE 为 SCHEMAS 时,忽略指定的模式,使用 SCHEMAS:INFO 格式。例如:EXCLUDE= SCHEMAS:SCH1,SCH2。
- 当 TYPE 为 TABLES 时,忽略指定的表,使用 TABLES:INFO 格式。例如:EXCLUDE= TABLES:table1,table2。
- 当 TYPE 为 VIEWS 时,忽略指定的视图,使用 VIEWS:INFO 格式。例如:EXCLUDE= VIEWS:view1,view2。
- 当 TYPE 为 PROCEDURE 时,忽略指定的存储过程和存储函数。
- 当 TYPE 为 PACKAGE 时,忽略指定的包。
- 当 TYPE 为 SEQUENCE 时,忽略指定的序列。
例 设置 EXCLUDE=(CONSTRAINTS),将当前用户下的 table1、table2 的对象信息导入时不导入除主键和非空约束外的其他约束。
./dimp SYSDBA/Dmsys_123 FILE=/mnt/data/db_str.dmp LOG=db_str.log
TABLES=table1,table2 EXCLUDE=\(CONSTRAINTS\) DIRECTORY=/mnt/data/dimp
3.3.2.9 INCLUDE
INCLUDE 用来批量设置导入时只导入指定的对象种类或某个具体对象。可选参数。
INCLUDE=[(]<对象种类名>{,<对象种类名>}[)]
或
INCLUDE=TYPE:name1,name2
< 对象种类名 >:包括 CONSTRAINTS、INDEXES、ROWS、TRIGGERS、GRANTS、VIEWS、PROCEDURE、PACKAGE、SEQUENCE、TABLES、JOB。例如:INCLUDE=(CONSTRAINTS , INDEXES)。
TYPE:包括 SCHEMAS、TABLES、VIEWS、PROCEDURE、PACKAGE、SEQUENCE。
- 当 TYPE 为 SCHEMAS 时,只导入指定的模式,使用 SCHEMAS:INFO 格式。例如:INCLUDE=SCHEMAS:SCH1,SCH2。
- 当 TYPE 为 TABLES 时,只导入指定的表,使用 TABLES:INFO 格式。例如:INCLUDE= TABLES:table1,table2。
- 当 TYPE 为 VIEWS 时,只导入指定的视图,使用 VIEWS:INFO 格式。例如:INCLUDE= VIEWS:view1,view2。
- 当 TYPE 为 PROCEDURE 时,只导入指定的存储过程和存储函数。
- 当 TYPE 为 PACKAGE 时,只导入指定的包。
- 当 TYPE 为 SEQUENCE 时,只导入指定的序列。
例 设置 INCLUDE=(CONSTRAINTS),将当前用户下的 table1、table2 的对象信息导入时只导入约束。
./dimp SYSDBA/Dmsys_123 FILE=/mnt/data/db_str.dmp LOG=db_str.log TABLES=table1,table2 INCLUDE=\(CONSTRAINTS\) DIRECTORY=/mnt/data/dimp
3.3.2.10 GRANTS、CONSTRAINTS、INDEXES、TRIGGERS、ROWS
这些参数用来指定某类对象是否被导入。类别分别为约束、权限、索引、触发器和数据。
语法如下:
GRANTS=Y/N
CONSTRAINTS=Y/N
INDEXES=Y/N
TRIGGERS=Y/N
ROWS=Y/N
GRANTS:设置是否导入权限,可选参数。取值范围:Y/N。Y:导入权限,缺省值;N:不导入权限。
CONSTRAINTS:设置是否导入约束,可选参数。取值范围:Y/N。Y:导入约束,缺省值;N:不导入约束。主键和非空约束不受该参数限制,始终会导入。
INDEXES:设置是否导入索引,可选参数。取值范围:Y/N。Y:导入索引,缺省值;N:不导入索引。
TRIGGERS:设置是否导入触发器,可选参数。取值范围:Y/N。Y:导入触发器,缺省值;N:不导入触发器。
ROWS:设置是否导入数据,可选参数。取值范围:Y/N。Y:导入数据,缺省值;N:不导入数据。
例 设置 ROWS=N 不导入表中的数据。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp NOLOGFILE=Y FULL=Y DIRECTORY=/mnt/data/dimp ROWS=N
注意此处,对象(CONSTRAINTS、GRANTS、INDEXES、TRIGGERS、ROWS)分别单独设置为N和EXCLUDE批量设置功能一样,设置一个即可。
对象(CONSTRAINTS、GRANTS、INDEXES、TRIGGERS、ROWS)分别单独设置为Y和INCLUDE批量设置功能略有区别,设置INCLUDE时只导入指定了的对象;单独设置CONSTRAINTS、GRANTS、INDEXES、TRIGGERS、ROWS仅用于控制是否导入该对象。
如果单独设置和批量设置同时出现时,那么以最后出现的那个为准。
3.3.2.11 NOLOGFILE
NOLOGFILE 用于设置是否使用日志文件。可选参数。
语法如下:
NOLOGFILE=Y/N
Y:不使用日志文件。此时即使存在 LOG 参数,LOG 参数也为无效。
N:使用日志文件,缺省值。
例 设置 NOLOGFILE=Y,不使用日志文件。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp NOLOGFILE=Y FULL=Y
3.3.2.12 NOLOG
NOLOG 设置屏幕上是否显示日志信息。可选参数。缺省为 N,显示日志信息。
语法如下:
NOLOG=Y/N
Y:不显示。
N:显示,缺省值。
例 设置 NOLOG=Y 屏幕不显示日志信息。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log NOLOG=Y FULL=Y DIRECTORY=/mnt/data/dimp
3.3.2.13 LOG_WRITE
LOG_WRITE 用于日志信息实时写入日志文件。可选参数。
语法如下:
LOG_WRITE=Y/N
Y:一边将日志内容打印到屏幕上,一边将日志内容写入日志文件。
N:日志内容先在屏幕上全部打印完毕再写入日志文件,缺省值。
3.3.2.14 DUMMY
DUMMY 用于设置交互信息处理。可选参数,缺省使用 P 打印交互信息。在使用 dimpdp 的时候,此参数无需设置,不提供交互信息,全部按 YES 处理。
语法如下:
DUMMY=P/Y/N
P:打印交互信息,默认方式。
Y:不打印交互信息,所有交互都按 YES 处理。
N:不打印交互信息,所有交互都按 NO 处理。
3.3.2.15 PARFILE
PARFILE 用于将常用的参数设置保存到文件中,然后使用参数文件 PARFILE 进行导出、导入操作。可选参数。长度不超过 256 个字符。在使用 dimpdp 的时候,该文件须放在服务器端。
语法如下:
PARFILE=<path>
<path>:PARFILE 文件的绝对路径。
例 在 dimp 中使用 PARFILE,设置路径 PARFILE=/mnt/data/dimp/para.txt。
./dimp USERID=SYSDBA/Dmsys_123 PARFILE=/mnt/data/dimp/para.txt
其中,参数文件/mnt/data/dimp/para.txt 的内容如下:
FILE=/mnt/data/dexp/db_str.dmp
LOG=db_str.log
TABLES=table1
DIRECTORY=/mnt/data/dimp
3.3.2.16 FEEDBACK
FEEDBACK 用来指明在导入数据的过程中每间隔多少行打印一次进度信息。可选参数。
当参数缺省时,缺省值为 0,只打印导入表的总行数。
语法如下:
FEEDBACK=<num>
<num>:表间隔的行数。正整数。缺省为 0,只打印导入表的总行数。
例 将文件 dexp.dmp 中的对象和数据导入到数据库时,要求在导入的过程中每隔 100 行打印一次进度信息。
./dimp SYSDBA/Dmsys_123 FULL=Y FILE=/mnt/data/dexp/dexp.dmp LOG=db_str.log
DIRECTORY=/mnt/data/dimp FEEDBACK=100
3.3.2.17 COMPILE
如果导入时包含过程/函数、视图、物化视图、触发器、类和包,那么导入时会执行一个编译语句(alter...compile)。COMPILE 用于设置是否在导入时,对过程或函数执行编译。
编译相当于执行重建操作,用于检查过程或函数是否还有效。编译成功,说明对象是有效的;编译失败,说明对象不存在或发生改变,导致重建操作失败。编译失败,导入停止。
不编译就不检查有效性,直接导入。
语法如下:
COMPILE=N/Y
Y:执行,缺省值。
N:不执行。
例 导入的过程中含有函数 FUN_01,那么导入时会自动执行如下语句:
alter function "SYSDBA"."FUN_01" compile;
如果不想编译,需要设置 COMPILE=N。
3.3.2.18 INDEXFILE
用于将表的索引/约束创建信息写入指定的文件。指定该参数时,索引不执行导入,仅将创建信息和属性信息写入指定的文件。长度不超过 256 个字符,绝对路径不超过 256 个字符。
语法如下:
INDEXFILE=<文件>
例 设置 INDEXFILE=/mnt/data/dimp/dimp.log。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y
INDEXFILE=/mnt/data/dimp/dimp.log
3.3.2.19 INDEXFIRST
INDEXFIRST 用于设置导入时是否先建索引。可选参数。
创建索引的过程是先遍历数据再创建索引树。数据量比较大时,应该选择 INDEXFIRST=Y,先创建索引再导入数据,这样就避免创建索引之前遍历大量数据而耗费时间;数据量小时,可任意选择。
语法如下:
INDEXFIRST=Y/N
Y:是。
N:否,缺省值。
3.3.2.20 REMAP_SCHEMA
将源模式中的数据导入到目标模式中。可选参数。
跨用户导入数据时,必须指定 REMAP_SCHEMA 参数,若需要跨用户导入多个模式中的数据,则针对每个源模式均需指定模式映射关系,多个模式映射关系之间使用逗号分隔。
语法如下:
REMAP_SCHEMA=<模式映射关系>{,<模式映射关系>}
<模式映射关系>::=<source_schema>:<target_schema>
<source_schema>:源模式。如果指定的源模式不存在,则导入到对象原来所在的模式。
<target_schema>:目标模式。如果目标模式不存在,系统会先创建目标模式,再继续导入。
例 将 SYSDBA 模式中的数据导入到 PERSON 模式中。
./dimp SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/imp_exp.dmp DIRECTORY=/mnt/data/dimp
FULL=Y REMAP_SCHEMA=SYSDBA:PERSON
3.3.2.21 ENCRYPT_PASSWORD、ENCRYPT_NAME
如果数据文件是通过加密后得到的,在数据文件导入到数据库时,需要提供加密密钥和加密算法。同时,在 1 个小时内密码只有 10 次错误机会。
语法如下:
ENCRYPT_PASSWORD=<加密密钥>
ENCRYPT_NAME=<加密算法>
<加密密钥>:与导出文件的加密密钥相同。
<加密算法>:与导出文件的加密算法相同。导出加密算法缺省的情况下,此处加密算法可不写。
例 将 2.3.2.17 ENCRYPT、ENCRYPT_PASSWORD、ENCRYPT_NAME 中导出的数据再导入进来。
./dimp SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/dk15.dmp LOG=db_str19.log
FULL=Y DIRECTORY=/mnt/data/dimp ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC
3.3.2.22 SHOW/DESCRIBE
SHOW/DESCRIBE 用于设置是否打印待导入的数据文件的内容信息列表,当设置 SHOW/DESCRIBE=Y 时,仅展示待导入的数据文件的内容信息列表,实际不执行导入操作。可选参数。
语法如下:
SHOW=Y/N
或
DESCRIBE=Y/N
Y:是。
N:否,缺省值。
例 想查看/mnt/data/dexp 中待导入的 db_str.dmp 文件的内容信息列表。
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp SHOW=Y
打印结果如下:
--------------------------------导入文件列表信息--------------------------------
共包含1个文件,文件如下:
./dimp USERID=SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/db_str.dmp SHOW=Y
导入文件为 FULL 方式导出,共包含以下 7 个模式
模式SYSDBA 含有 2 个表
TT1, 0行
TT2, 0行
模式RESOURCES 含有 4 个表
DEPARTMENT, 5行
EMPLOYEE, 8行
EMPLOYEE_ADDRESS, 8行
EMPLOYEE_DEPARTMENT, 7行
模式PERSON 含有 4 个表
ADDRESS, 16行
ADDRESS_TYPE, 4行
PERSON, 17行
PERSON_TYPE, 4行
模式SALES 含有 5 个表
CUSTOMER, 6行
CUSTOMER_ADDRESS, 12行
SALESPERSON, 2行
SALESORDER_HEADER, 2行
SALESORDER_DETAIL, 4行
模式PRODUCTION 含有 7 个表
PRODUCT_CATEGORY, 7行
PRODUCT_SUBCATEGORY, 40行
PRODUCT, 10行
LOCATION, 38行
PRODUCT_INVENTORY, 8行
PRODUCT_REVIEW, 20行
PRODUCT_VENDOR, 8行
模式PURCHASING 含有 5 个表
VENDOR, 12行
VENDOR_ADDRESS, 24行
VENDOR_PERSON, 12行
PURCHASEORDER_HEADER, 1行
PURCHASEORDER_DETAIL, 0行
模式OTHER 含有 10 个表
DEPARTMENT, 9行
EMPSALARY, 14行
ACCOUNT, 5行
ACTIONS, 7行
READER, 3行
READERAUDIT, 0行
DEPTTAB, 0行
EMPTAB, 0行
SALGRADE, 0行
COMPANYHOLIDAYS, 0行
文件中对象统计信息如下:
INDEX:1个
TRIGGER:3个
PROCEDURE:2个
VIEW:2个
SEQUENCE:2个
USER:1个
SYS_PRIV:1个
SCHEMA_GRANT:4个
PACKAGE:3个
TABLEV_GRANT:1个
PKG_BODY:1个
SYSPACKAGES_DEF:1个
TABLE_CONS_UNIQUE:1个
SR_PRIV:3个
3.3.2.23 TASK_THREAD_NUMBER
TASK_THREAD_NUMBER 用于设置 dmfldr 处理用户数据的线程数目。可选参数,缺省值为 CPU 个数。但当 CPU 个数大于 8 时,默认值都被置为 8。
语法如下:
TASK_THREAD_NUMBER=<num>
<num>:线程数。取值范围:1~128,缺省为 CPU 个数(8 及 8 以内)。
3.3.2.24 BUFFER_NODE_SIZE
BUFFER_NODE_SIZE 用于设置 dmfldr 指定读取文件缓冲区页大小。可选参数,缺省为 10。
值越大,缓冲区的页数越多,每次可以读取的数据就越多,每次发送到服务器的数据也就越多,效率越高。但其大小受 dmfldr 客户端内存大小限制。
语法如下:
BUFFER_NODE_SIZE=<size_num>
<size_num>:缓冲区页数。整数类型,取值范围:1~2048,缺省为 10。单位为 M。
3.3.2.25 TASK_SEND_NODE_NUMBER
TASK_SEND_NODE_NUMBER 用于设置 dmfldr 发送节点个数。可选参数。
语法如下:
TASK_SEND_NODE_NUMBER=<num>
<num>:节点个数。整数类型,取值范围:16~65535。在系统内存够的情况下可以适当的设大数值以提升效率。缺省情况下,由程序自动计算。
3.3.2.26 LOB_NOT_FAST_LOAD
LOB_NOT_FAST_LOAD 用于设置当表中含有大字段时不使用 dmfldr,而使用普通的 INSERT 进行插入,根据 COMMIT_ROWS 参数决定提交的行数。因为当表中有大字段的时候,dmfldr 是一行一行提交表数据。
语法如下:
LOB_NOT_FAST_LOAD=Y/N
Y:表中含有大字段时不使用 dmfldr。
N:表中含有大字段时使用 dmfldr,缺省值。
3.3.2.27 PRIMARY_CONFLICT
PRIMARY_CONFLICT 用于设置主键冲突的处理方式。可选参数,不设置此参数时主键冲突报错,设置时不报错,可指定对主键冲突的数据进行不同的处理。
语法如下:
PRIMARY_CONFLICT=[IGNORE|OVERWRITE|OVERWRITE2]
IGNORE:不覆盖主键冲突行数据。
OVERWRITE:覆盖主键冲突行数据,删除原表有冲突的行。
OVERWRITE2:覆盖主键冲突行数据,更新原表有冲突的行。
3.3.2.28 TABLE_FIRST
TABLE_FIRST 用于控制是否强制先导入表对象。可选参数,缺省为 N。
语法如下:
TABLE_FIRST=Y/N
N:正常导入,缺省值。顺序为:1.没有依赖的对象(除了表之外的数据库对象);2.有依赖的 class;3.表;4.依赖对象。
Y:强制先导入表。顺序为:1.表;2.没有依赖的对象(除了表之外的数据库对象);3.有依赖的 class;4.依赖对象。
3.3.2.29 SHOW_SERVER_INFO
SHOW_SERVER_INFO 用于控制是否显示服务器信息。可选参数,缺省为 N。
语法如下:
SHOW_SERVER_INFO=Y/N
N:不显示导出文件对应服务器信息,正常导入,缺省值。
Y:显示导出文件对应服务器信息,实际不导入。
3.3.2.30 IGNORE_INIT_PARA
IGNORE_INIT_PARA 用于指定源库和目标库之间忽略差异的建库参数。取值范围:0、1、2 和 3。缺省为 0。
0:不忽略;
1:忽略 CASE_SENSITIVE 参数差异;
2:忽略 LENGTH_IN_CHAR 参数差异;
3:忽略 CASE_SENSITIVE、LENGTH_IN_CHAR 参数差异可选参数。
语法如下:
IGNORE_INIT_PARA=<num>
<num>:需要忽略的建库参数代号。取值范围:0、1、2 和 3,缺省为 0。
3.3.2.31 AUTO_FREE_KEY
如果数据文件是通过工作模式为 WORK_MODE_KID 的加密算法加密后得到的,则可通过 AUTO_FREE_KEY 指定在数据导入完成后是否释放加密文件使用的密钥,密钥释放后该数据文件将无法使用。关于工作模式的详细介绍可参考《DM8 安全管理》。
语法如下:
AUTO_FREE_KEY=Y/N
Y:是。
N:否,缺省值。
3.3.2.32 REMAP_TABLE
将源表/视图中的数据导入到目的表/视图中。可选参数。
语法如下:
[<SOURCE_SCHEMA>.]<SOURCE_TABLE>:<TARGET_TABLE>
<SOURCE_SCHEMA>:源表/视图所属的模式。如果缺省则代表所有模式下的 <SOURCE_TABLE> 都是源表/视图。目的表/视图存在则报错。
<SOURCE_TABLE>:源表/视图。
<TARGET_TABLE>:目的表/视图。
例 将源表 T1 中的数据导入到目的表 T2 中。
./dimp SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/imp_exp.dmp DIRECTORY=/mnt/data/dimp FULL=Y REMAP_TABLE=T1:T2
3.3.2.33 REMAP_TABLESPACE
将源表空间中的数据导入到目的表空间中。使用该参数的前提是导出文件中包含源表表空间。可选参数。
语法如下:
<SOURCE_TABLESPACE>:<TARGET_TABLESPACE>
<SOURCE_TABLESPACE>:源表空间。
<TARGET_TABLESPACE>:目的表空间,如果目的表空间不存在,需要用户提前创建。
例 将 MAIN 表空间中的数据导入到 TS 表空间。
./dimp SYSDBA/Dmsys_123 FILE=/mnt/data/dexp/imp_exp.dmp DIRECTORY=/mnt/data/dimp FULL=Y REMAP_TABLESPACE=MAIN:TS
3.3.2.34 SIMPLE_LOG
SIMPLE_LOG 用于设置导入日志是否只打印简要日志,简要日志只打印导入对象个数和导入表数据行数。可选参数。
语法如下:
SIMPLE_LOG=N/Y
N:导入日志不使用简要日志,缺省值。
Y:导入日志使用简要日志。
3.3.2.35 DATA_ONLY
DATA_ONLY 用于控制是否只导入表数据。可选参数。
语法如下:
DATA_ONLY=N/Y
N:对象定义和数据都导入,缺省值。
Y:只导入表数据。
3.3.2.36 INDEX_OPTION
使用快速装载时索引的设置选项,整型数值。取值范围:1、2 和 3,缺省为 2。可选参数。
1:服务器装载数据时先不刷新二级索引,而是将新数据按照索引预先排序,在装载完成后,再将排好序的数据插入索引;
2:服务器在快速装载过程中不刷新二级索引数据,只在装载完成时,重建所有二级索引;
3:代表服务器使用追加模式来进行二级索引的插入,在数据装载的过程中,同时进行二级索引的插入。若未禁用全局索引,则在非 DPC 环境下,全局索引可通过设置 INDEX_OPTION 为 3 进行插入。
语法如下:
INDEX_OPTION=<num>
<num>:索引设置选项。取值范围:1、2 和 3,缺省为 2。
3.3.2.37 CTRL_INFO
CTRL_INFO 控制信息,用来控制一些特殊情况导入。可选参数,缺省为 0。
语法如下:
CTRL_INFO=[n]
n 取值为整型数值。如果要控制多种情况,可设置为多种值相加。
0:不导入表空间定义。
1:导入表空间定义。
2:先校验导入文件的 MD5 值再执行导入。只有 MD5 值校验成功的文件才能导入成功。dexp 执行导出时会为导出文件生成一个 MD5 值,记录在导出文件中,用于标识文件的完整性。dimp 导入时使用同样的方法再次为该文件生成一个 MD5 值。通过比较,如果前后两个 MD5 值一致,说明该文件完好无损;如果 MD5 值不一致,则说明文件已损坏。
4:校验导入文件的 MD5 值。此处不会执行导入,只是用于校验文件的完整性。
8:导入对象时忽略 OR REPLACE 条件。其中对象包括:视图、同义词、触发器、类、域、过程、函数、索引、包、目录、上下文、DBLINK。
16:将源模式中的数据导入到目标模式时,使用指定的 remap_schema 参数替换列定义默认值序列的模式名。
3.3.2.38 CONFIG_FILE
CONFIG_FILE 用于指定局部配置文件路径,局部配置文件中可以配置导入导出默认连接串和默认密码。可选参数。长度不超过 256 个字符。
语法如下:
CONFIG_FILE=<path>
<path>:局部配置文件路径。
例 设置 CONFIG_FILE=/mnt/data/dexp/local_config.txt。
./dimp CONFIG_FILE=/mnt/data/dexp/local_config.txt FILE=test.dmp
其中,局部配置文件 local_config.txt 中的内容如下:
DUMP_CONN_STR=(SYSDBA/Dmsys_123@LOCALHOST:5236)
DUMP_PASSWORD=(Dmsys_123)
局部配置文件目前仅支持以下两个配置项:
DUMP_CONN_STR:指定导入导出默认连接串。没有指定 USERID 连接串时,使用该连接串。
DUMP_PASSWORD:指定导入导出默认连接密码。
全局配置文件 dm_svc.conf 中也支持配置 DUMP_CONN_STR 和 DUMP_PASSWORD,局部配置文件的优先级高于全局配置文件 dm_svc.conf。
3.3.2.39 FILE_VERSION
FILE_VERSION 用来指定将 dmp 文件降级后的新 dmp 文件的逻辑版本,不执行导入操作,有效范围 9~27。可选参数。
语法如下:
FILE_VERSION = <num>
<num>:将 dmp 文件降级成后的新 dmp 文件的逻辑版本,为 9~27 之间的正整数。
注:使用 dimp 进行文件降级操作,指定的降级文件版本需小于 dmp 文件当前的版本。
例 将逻辑版本为 15 的 dmp 文件 dexp.dmp 降级生成逻辑版本为 14 的 dmp 文件 dexp_ver14.dmp。
./dimp SYSDBA/Dmsys_123 FILE=dexp.dmp DIRECTORY=/mnt/data/dexp FILE_VERSION=14
3.3.2.40 HELP
输入 dimp HELP 即可查看帮助信息。
语法如下:
HELP
例 使用 HELP 查看帮助信息。
./dimp HELP
HELP 信息会显示 dimp 版本信息以及所有参数的大致信息,供用户快速参考。